home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / fapxtool / src / txm / txminfo.c < prev    next >
C/C++ Source or Header  |  1995-01-06  |  3KB  |  167 lines

  1. /***************
  2. *
  3. * txm\txminfo.c
  4. */
  5. #include "txm.h"
  6.  
  7. /* ログファイル1行目を読み込み */
  8. char *preopen(char *buf)
  9. {
  10.     FILE *fp;
  11.     char *ret;
  12.     long fsize;
  13. #if 0
  14.     struct sbuf;
  15.     /* ここで突然ファイルサイズチェック */
  16.     if (stat(logfile, &sbuf) {
  17.         return NULL;
  18.     }
  19.     /* ログファイルが指定条件より小さければ何もしない */
  20.     if (sbuf.st_size < ((long)maxrun * 1024)) {
  21.         return NULL;
  22.     }
  23. #endif
  24.  
  25. /*    printf("preopen()\n");    */
  26.     if ((fp = fopen(logfile, "rb")) == NULL) {
  27.         return NULL;
  28.     }
  29.  
  30.     /* ここで突然ファイルサイズチェック */
  31.     fsize = filelength(fileno(fp));
  32.  
  33.     /* ログファイルが指定条件より小さければ何もしない */
  34.     if (fsize < ((long)maxrun * 1024)) {
  35.         fclose(fp);
  36.         return NULL;
  37.     }
  38.  
  39.     ret = fgets(buf, 80, fp);
  40.     fclose(fp);
  41.     return (ret);
  42. }
  43.  
  44. /* ヘッダチェック(Merged by FAPX) */
  45. int chkheader(char *buf)
  46. {
  47. /*    printf("chkheader()\n");    */
  48.     if (strstr(buf, "Merged") == NULL) {
  49.         return FALSE;
  50.     }
  51.     return TRUE;
  52. }
  53.  
  54. /* 情報ファイル名作成 & 会議室番号読み取り */
  55. int makeinfofilename(char *buf)
  56. {
  57.     char fname[16];
  58.     int no;
  59.  
  60. /*    printf("makeinfofilename()\n");    */
  61.  
  62.     hpflg = FALSE;
  63.     strcpy(infofile, txmdir);
  64.     if (jstrrchr(infofile, '\\') != (infofile + strlen(infofile) - 1)) {
  65.         strcat(infofile, "\\");
  66.     }
  67.  
  68.     if (strncmp(buf, "FORUM:", 6) == 0) {
  69.         if (sscanf(buf, "FORUM:%8s MES:%2d", fname, &no) < 2) {
  70.             return FALSE;
  71.         }
  72.     }
  73.     else if (strncmp(buf, "HP:", 3) == 0) {
  74.         hpflg = TRUE;
  75.         no = 2;
  76.         if (sscanf(buf, "HP:%8s ", fname) < 1) {
  77.             return FALSE;
  78.         }
  79.     }
  80.     else if (strncmp(buf, "PATIO:", 6) == 0) {
  81.         no = 1;
  82.         if (sscanf(buf, "PATIO:%8s ", fname) < 1) {
  83.             return FALSE;
  84.         }
  85.     }
  86.     else {
  87.         return FALSE;
  88.     }
  89.     if (no == 0) {
  90.         return FALSE;
  91.     }
  92.     mesno = no;
  93.     nowinfo = &(info.mes[mesno]);
  94.  
  95.     strcat(infofile, fname);
  96.     strcat(infofile, ".TXM");
  97. /*    printf("infofile:%s\n", infofile);    */
  98.  
  99.     return TRUE;
  100. }
  101.  
  102. /* 情報ファイル新規作成 */
  103. void makenewinfo()
  104. {
  105.     int i;
  106.  
  107. /*    printf("makenewinfo()\n");    */
  108.     for (i = 0; i < 20; i++) {
  109.         info.mes[i].version = 0x01;    /* バージョン現在はチェック無し */
  110.         info.mes[i].ext = 1;
  111.         info.mes[i].art = 0;
  112.         info.mes[i].ltime.x = 0;
  113.         info.mes[i].reserve1 = 0;
  114.         info.mes[i].reserve2 = 0;
  115.         info.mes[i].reserve3 = 0;
  116.     }
  117. }
  118.  
  119. /* 情報ファイルチェック(無ければ作成) */
  120. int chkinfo()
  121. {
  122.     char *kind;
  123.     FILE *fp;
  124.  
  125. /*    printf("chkinfo()\n");    */
  126.     if ((kind = preopen(line1)) == NULL) {
  127.         return FALSE;
  128.     }
  129.     if (chkheader(kind) == FALSE) {
  130.         return FALSE;
  131.     }
  132.     if (makeinfofilename(kind) == FALSE) {
  133.         return FALSE;
  134.     }
  135.  
  136.     if (fp = fopen(infofile, "rb")) {
  137.         if (fread((char *)(&info), sizeof(TXM), 1, fp) < 1) {
  138.             makenewinfo();
  139.         }
  140.         fclose(fp);
  141.     }
  142.     else {
  143.         makenewinfo();
  144.     }
  145.  
  146.     return TRUE;
  147. }
  148.  
  149. /* 情報ファイル保存 */
  150. int saveinfo()
  151. {
  152.     FILE *fp;
  153.  
  154. /*    printf("saveinfo()\n");    */
  155.     accessdir(txmdir);
  156.     if ((fp = fopen(infofile, "wb")) == NULL) {
  157.         return FALSE;
  158.     }
  159.     if (fwrite((char *)(&info), sizeof(TXM), 1, fp) < 1) {
  160.         fclose(fp);
  161.         return FALSE;
  162.     }
  163.     fclose(fp);
  164.     return TRUE;
  165. }
  166.  
  167.